#!/bin/bash

#Init des variables
tab_tons=('')
tab_notes_M=('a' 'ais' 'b' 'c' 'cis' 'd' 'dis' 'e' 'f' 'fis' 'g' 'gis')
tab_notes_m=('a' 'bes' 'b' 'c' 'des' 'd' 'ees' 'e' 'f' 'ges' 'g' 'aes')
tab_notes=('a' 'ais' 'b' 'c' 'cis' 'd' 'dis' 'e' 'f' 'fis' 'g' 'gis')
res_notes=('')
gamme_name='Gamme_sans_nom'

#Si il y a au moins un texte d'options pour le programme Gammes.sh
if [ $# -ge 1 ]
then
	###################################################################
	#Vérification des paramètres
	while [ $# -gt 0 ]
	do
	echo "Paramètre détecté = $1"
	
		case $1 in 
		"-t")
		#Initialise le tableau des tons
			shift #$1 devient $2 etc...
			nb_tons=0
			nb_options=$#
			i=0
			
			while [ $i -ge 0 ]
			do
				let "nb_tons=nb_tons+1"
				tab_tons[$nb_tons]=$1
				if [[ $2 =~ "-" ]] || [ $nb_tons -ge $nb_options ]
				then
					i=-1
				else
					shift
				fi
			done
			
			tons=${tab_tons[*]}
			
			;;
		"-o")
		#Initialise le tableau des tons
			shift #$1 devient $2 etc...
			nb_tons=0
			nb_options=$#
			i=0
			
			while [ $i -ge 0 ]
			do
				let "nb_tons=nb_tons+1"
				tab_tons[$nb_tons]=$1
				if [[ $2 =~ "-" ]] || [ $nb_tons -ge $nb_options ]
				then
					i=-1
				else
					shift
				fi
			done
			
			tons=`./NotesToTon ${tab_tons[*]}`
			let "nb_tons=nb_tons-1"
			
			;;
		"-n")
			#On change le nom de la gamme
			shift
			gamme_name=$1
			;;
		"-M")
			#On traite la gamme comme une gamme Majeure
			#C'est l'option par défaut
			;;
		"-m")
			#On traite la gamme comme une gamme mineure
			for i in `seq 0 11`
			do
				tab_notes[$i]=${tab_notes_m[$i]}
			done
			;;
		*)
			echo "Erreur: Paramètre non reconnu"
			
			;;
		esac
		shift
		
	done	#end while
	##################################################################
	#On effectue la conversion en notes sur toutes les notes possibles
	echo "tons = $tons"
	
	for j in `seq 0 11`
	do
		notes=`./Equation $j $tons`
				
#		echo ${tab_tons[*]}
#		echo $notes
				
		index=(`echo "$notes"`)
				
		for i in `seq 0 $nb_tons`
		do
			let "k=i+((nb_tons+1)*j)"
			res_notes[$k]=${tab_notes[${index[$i]}]}
		done		
#		echo ${index[*]}
	done
	###################################################################
	#Création des fichiers
	echo "Nom de la gamme: $gamme_name"
	#echo "notes: ${res_notes[*]}"
	echo "Création du fichier .ly..."
	echo -n "\version " > $gamme_name.ly
	echo -e "\"2.10.33\"" >> $gamme_name.ly
	echo "\paper{ top-margin = 0\mm after-title-space = 12\mm }" >> $gamme_name.ly
	echo "\header{title = \"$gamme_name\"}" >> $gamme_name.ly
	echo "\new score" >> $gamme_name.ly
	echo "{" >> $gamme_name.ly
	echo -e -n "\t" >> $gamme_name.ly
	echo "\new staff" >> $gamme_name.ly
	echo -e "\t{" >> $gamme_name.ly

	let "nb_notes=nb_tons+1"
	echo -e -n "\t\t" >> $gamme_name.ly
	echo "\time $nb_notes/4" >> $gamme_name.ly

	for j in `seq 0 11`
	do
		echo -e -n "\t\t" >> $gamme_name.ly
		echo "\relative c'" >> $gamme_name.ly

		echo -e -n "\t\t" >> $gamme_name.ly
		echo -n -e "{\t{" >> $gamme_name.ly
		for i in `seq 0 $nb_tons`
		do
			let "k=i+((nb_tons+1)*j)"
			echo -n "`echo ${res_notes[$k]}` " >> $gamme_name.ly
		done
		echo -n -e " }\t}" >> $gamme_name.ly
		echo " \break \bar \"|.\"" >> $gamme_name.ly
	done

	echo -e "\t}" >> $gamme_name.ly
	echo -e "}" >> $gamme_name.ly

	echo "Création du pdf..."
	lilypond $gamme_name.ly
	rm $gamme_name.ps
	echo "Création du fichier $gamme_name.pdf terminé!"

	
else
	#S'il n'y a pas de paramètres
	echo "Erreur: Paramètre manquant, consultez l'aide:"
	echo "'./Gammes --help'"
fi


	 		











